package cn.jietuo.leetcode.array;

/**
 * 给定一个整数类型的数组 nums，请编写一个能够返回数组 “中心索引” 的方法。
 * <p>
 * 我们是这样定义数组 中心索引 的：数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
 * <p>
 * 如果数组不存在中心索引，那么我们应该返回 -1。如果数组有多个中心索引，那么我们应该返回最靠近左边的那一个。
 */
class Exercise1 {
    public int pivotIndex(int[] nums) {
        if (nums == null || nums.length <= 0) {
            return -1;
        }
        // 暴力法
        for (int i = 0; i < nums.length; i++) {
            // 求0~i的和 与i+1到nums.length的和做比对
            int left = 0;
            int right = 0;
            if (i == 0) {
                right = sumArray(nums, i + 1, nums.length - 1);
            } else if (i == nums.length - 1) {
                left = sumArray(nums, 0, i - 1);
            } else {
                left = sumArray(nums, 0, i - 1);
                right = sumArray(nums, i + 1, nums.length - 1);
            }
            if (left == right) {
                return i;
            }
        }
        return -1;
    }

    public int sumArray(int[] nums, int start, int end) {
        if (nums == null || nums.length <= 0) {
            return -1;
        }
        int result = 0;
        for (int i = start; i <= end; i++) {
            result += nums[i];
        }
        return result;
    }
}